// Action 提交的是 mutation，而不是直接变更状态。
// Action 可以包含任意异步操作。
import cookie from '../../utils/cookie'
import pageUtil from '../../utils/page'

/* 导出actions方法 */
import { showLoading, hideLoading, showFullscreenImg, hideFullscreenImg } from './widgetUi'
import { initNimSDK } from './initNimSDK'
import { setCurrSession, resetCurrSession, onSessions } from './session'
import { sendMsg, sendMsgReceipt } from './msgs'

function connectNim ({ state, commit, dispatch }, obj) {
  var userinfo = JSON.parse(window.sessionStorage.userInfo)
  // 操作为内容页刷新页面，此时无nim实例
  if (!userinfo.uid) {
      // 无cookie，直接跳转登录页 ???
    pageUtil.turnPage('无历史登录记录，请重新登录', '/')
  } else {
      // 有cookie，重新登录
    dispatch('initNimSDK', userinfo)
  }
}

export default {
  updateRefreshState ({ commit }) {
    commit('updateRefreshState')
  },

  // UI 及页面状态变更
  showLoading,
  hideLoading,
  showFullscreenImg,
  hideFullscreenImg,

  // 连接sdk请求，false表示强制重连
  connect (store, obj) {
    connectNim(store, obj)
  },

  // 用户触发的登出逻辑 ????
  logout ({ state, commit }) {
    cookie.delCookie('uid')
    cookie.delCookie('sdktoken')
    if (state.nim) {
      state.nim.disconnect()
    }
    pageUtil.turnPage('', '/')
  },

  // 初始化 重新连接SDK
  initNimSDK,
  onSessions,
  // 设置当前会话
  setCurrSession,
  // 重置当前会话
  resetCurrSession,
  // 发送消息（消息、文件，机器人信息）
  sendMsg,
  // 发送消息已读回执
  sendMsgReceipt
}
